package org.sport.logic;

import org.sport.init.SportServerSymbol;
import org.springframework.context.ApplicationListener;
import org.springframework.context.event.ContextRefreshedEvent;
import org.springframework.stereotype.Component;

import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;

/**
 * Created by Allen on 2017/9/27.
 */
@Component
public class SysInition implements ApplicationListener<ContextRefreshedEvent> {


    private static boolean flag = false;    //防止二次调用

    private SportServerSymbol sportServerSymbol;

    /**
     *  复制整个文件夹内容
     *  @param  oldPath  String  原文件路径  如：c:/fqf
     *  @param  newPath  String  复制后路径  如：f:/fqf/ff
     *  @return  boolean
     */
    public  void  copyFolder(String  oldPath,  String  newPath)  {

        try  {
            (new File(newPath)).mkdirs();  //如果文件夹不存在  则建立新文件夹
            File  a=new  File(oldPath);
            String[]  file=a.list();
            File  temp=null;
            for  (int  i  =  0;  i  <  file.length;  i++)  {
                if(oldPath.endsWith(File.separator)){
                    temp=new  File(oldPath+file[i]);
                }
                else{
                    temp=new  File(oldPath+File.separator+file[i]);
                }

                if(temp.isFile()){
                    FileInputStream input  =  new  FileInputStream(temp);
                    FileOutputStream output  =  new  FileOutputStream(newPath  +  "/"  +
                            (temp.getName()).toString());
                    byte[]  b  =  new  byte[1024  *  5];
                    int  len;
                    while  (  (len  =  input.read(b))  !=  -1)  {
                        output.write(b,  0,  len);
                    }
                    output.flush();
                    output.close();
                    input.close();
                }
                if(temp.isDirectory()){//如果是子文件夹
                    copyFolder(oldPath+"/"+file[i],newPath+"/"+file[i]);
                }
            }
        }
        catch  (Exception  e)  {
            System.out.println("复制整个文件夹内容操作出错");
            e.printStackTrace();
        }
    }


    /**
     * Handle an application event.
     *
     * @param event the event to respond to
     */
    @Override
    public void onApplicationEvent(ContextRefreshedEvent event) {

        if(!flag)
        {
            flag = true;
            System.out.println("服务器初始化程序");
            //需要copy到的path
//            String path2 = request.getSession().getServletContext().getRealPath("/0/upload_img");

            String path2 = sportServerSymbol.tomcatImgPath;
                    //"D:\\toolProgram\\vm\\vm-windows\\win7\\sharefolder\\UpTools\\tomcat8.0\\webapps\\ROOT\\0\\upload_img";
            //图片本来的存储，暂时可以写死
            String path = sportServerSymbol.ImgStoragePath;
                    //"E:\\work\\TCL\\homeworkImg";
            copyFolder(path,path2);                                 //copy到服务器的文件夹下面
        }
    }
}
